package com.naiterui.ehp.bs.file.service;

import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.naiterui.ehp.bs.file.api.bo.FileBO;
import com.naiterui.ehp.bs.file.api.bo.FileParamBO;
import com.naiterui.ehp.bs.file.api.exception.FileException;
import com.naiterui.ehp.bs.file.domain.FileStore;

/**
 * 文件相关
 * 
 * @author yangfuya
 * @since 2021/9/9
 */
public interface FileService {

    /**
     * 获取文件存储信息
     * 
     * @param uuid
     *            文件唯一标识
     * @param ec
     *            加密控制串
     * @param timestamp
     *            时间戳
     * @param sign
     *            加密签名
     * @param tc
     *            时间校验1.打开 0.关闭
     * @param request
     *            请求
     * @return
     * @throws FileException
     */
    FileStore getFileStore(String uuid, String ec, String timestamp, Integer tc, String sign,
        HttpServletRequest request)
        throws FileException;

    /**
     * 生成预览Url
     *
     * @param fileParamBO
     * @param operator
     * @return
     */
    FileBO generatePreview(FileParamBO fileParamBO, String operator);

    /**
     * 批量生成预览Url
     *
     * @param fileParamBO
     * @param operator
     * @return
     */
    Map<String, FileBO> batchGeneratePreview(FileParamBO fileParamBO, String operator);

    /**
     * 生成下载Url
     *
     * @param fileParamBO
     * @param operator
     * @return
     */
    FileBO generateDownload(FileParamBO fileParamBO, String operator);

    /**
     * 获取文件真实路径
     *
     * @param url
     * @return
     */
    String getRealPath(String url);

    /**
     * 批量获取文件真实路径
     *
     * @param urls
     * @return
     */
    Map<String, FileBO> batchRealPath(List<String> urls);
}
